#include <bits/stdc++.h>
using namespace std;
#define MAX 10000001 // 10^7+1
int b[MAX + 1];      // 素数标记数组,0为素数，1为非素数
int prime[MAX + 1];  // 素数数组
int num = 0;
void a_prime() //埃氏筛
{
    memset(b, 0, sizeof(b)); // 初始化为0，表示全为素数
    int i,j;
    b[0]=b[1]=1;
    for (i = 2; i < MAX; i++)// 筛选i = 2-MAX 的数
    {
        if(b[i]==0)
        {
           prime[++num]=i;  //第num个数为素数
           for(j=2;j*i<MAX;j++)
           {
               b[j*i]=1; // MAX范围内的素数i的倍数不是素数
           }
        }
    }
}
void x_prime() //线性筛
{
    memset(b, 0, sizeof(b)); // 初始化为0，表示全为素数
    int i,j;
    b[0]=b[1]=1;
    for (i = 2; i < MAX; i++)// 筛选i = 2-MAX 的数
    {
        if(b[i]==0)
        {
           prime[++num]=i;  //第num个数为素数
        }
        for(j=1;j<=num&&i*prime[j]<MAX;j++) // 筛除素数i与比自己小的素数的乘积
        {
            b[i*prime[j]]=1; // MAX范围内的素数i比自己小的素数的乘积不是素数
            if(i%prime[j]==0) // 比i小的素数是i的因数时跳出循环
                break;
        }
    }
}
int main()
{
    int n,i;
    x_prime();
    cin >> n;
    for(i=1;i<=n;i++) //输出前n个素数
    {
        cout << prime[i] << endl;
    }

    return 0;
}
